﻿using System;

namespace kinokasse.datamodel.contracts
{
    [Serializable]
    public class Preis
    {
        public Preis(double summe, int anzahlPlätze)
        {
            Summe = summe;
            AnzahlPlätze = anzahlPlätze;
        }

        public double Summe { get; private set; }
        public int AnzahlPlätze { get; private set; }


        #region Equality Members
        public bool Equals(Preis other)
        {
            if (ReferenceEquals(null, other)) return false;
            if (ReferenceEquals(this, other)) return true;
            return other.Summe.Equals(Summe) && other.AnzahlPlätze == AnzahlPlätze;
        }

        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj)) return false;
            if (ReferenceEquals(this, obj)) return true;
            if (obj.GetType() != typeof(Preis)) return false;
            return Equals((Preis)obj);
        }

        public override int GetHashCode()
        {
            unchecked
            {
                return (Summe.GetHashCode() * 397) ^ AnzahlPlätze;
            }
        }
        #endregion


        public override string ToString()
        {
            return string.Format("Summe: {0}, AnzahlPlätze: {1}", Summe, AnzahlPlätze);
        }
    }
}